package com.library.uiframework.widget.actionbar;

import android.content.Context;
import android.view.View;
import android.widget.FrameLayout;

/**
 * Created by leo on 2014/11/9.<br><br>
 * 基础HolderView绑定器<br><br>
 * BaseHolderView生成注意事项:<br><br>
 * 1.BaseHolderView具体实现类务必提供:构造函数(Context context),在此构造函数中调用super(Context context, int layoutResId)或super(Context context, View view)<br><br>
 * 2.BaseHolderView尽量采用单独类实现,避免采用内部类方式,如采用内部类方式实现(非静态),则务必在外部类中提供默认无参构造函数
 */
public abstract class BaseHolderView extends FrameLayout {


    /**
     * Context
     */
    protected Context mContext;

    /**
     * AdapterHolderView基类构造器
     *
     * @param context 上下文
     */
    public BaseHolderView(Context context) {
        super(context);
    }

    /**
     * AdapterHolderView基类构造器
     *
     * @param context     上下文
     * @param layoutResId 布局资源id
     */
    public BaseHolderView(Context context, int layoutResId) {
        super(context);
        this.mContext = context;
        inflate(context, layoutResId, this);
        initView(this);
    }

    /**
     * AdapterHolderView基类构造器
     *
     * @param context 上下文
     * @param view    布局控件
     */
    public BaseHolderView(Context context, View view) {
        super(context);
        this.mContext = context;
        addView(view);
        initView(this);
    }

    /**
     * 初始化HolderView内部控件
     *
     * @param rootView 顶层View
     */
    public abstract void initView(View rootView);

    /**
     * 绑定数据
     *
     * @param data     数据源
     * @param position 数据位置
     */
    public abstract void bindData(IAdapterData data, int position);

}
